package com.qf.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){

        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();

//        设置连接工厂 主要是为了知道连接哪个redis
        redisTemplate.setConnectionFactory(factory);

//      这是一个String 类型的序列化方式
        StringRedisSerializer redisSerializer=new StringRedisSerializer();
//        对String 类型的key   序列化
        redisTemplate.setKeySerializer(redisSerializer);
        //        对Hash 类型的key   序列化
        redisTemplate.setHashKeySerializer(redisSerializer);


        //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
        Jackson2JsonRedisSerializer<Object> jsonRedisSerializer=new Jackson2JsonRedisSerializer<>(Object.class);

//        我们的value 如何序列化内容  比如我们以json 方式  就需要一个json 类型的序列化
        redisTemplate.setValueSerializer(jsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jsonRedisSerializer);

        return redisTemplate;
    }




}
